/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package quanlinganhang.dao;

import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;
import quanlinganhang.view.CustomMessageDialog;

/**
 * Class hỗ trợ kiểm tra nhập liệu từ người dùng
 *
 * @author phamduong
 */
public class Validator {

    /**
     * Kiểm tra xem nội dung nhập liệu có rỗng không
     *
     * @param text
     * @return
     */
    public static boolean isEmpty(String text) {
        return text.trim().isEmpty();
    }

    /**
     * HIển thị thông báo cho người dùng
     *
     * @param text nội dung thông báo
     */
    public static void showMessage(String text) {
        new CustomMessageDialog(null, true, "Kiểm tra nội dung", text, CustomMessageDialog.MESSAGE);
    }

    /**
     * Kiểm tra xem nội dung nhập liêu của các TextField có trống hay không?
     * @param component
     * @return
     */
    public static boolean validateComponents(JTextComponent[] component) {
        if (component != null) {
            for (int i = 0; i < component.length; i++) {
                component[i].setBackground(Color.white);
                if (isEmpty(component[i].getText())) {
                    showMessage("Không được nhập dữ liệu rỗng");
                    component[i].setBackground(new Color(250, 255, 168));
                    component[i].requestFocus();
                    return false;
                }
            }
        }
        return true;
    }

    /**
     * Xóa trắng nội dung các TextField
     * @param tcp
     */
    public static void setBlankFields(JTextComponent[] tcp) {
        for (int i = 0; i < tcp.length; i++) {
            tcp[i].setText("");
        }
    }

    /**
     * check phone number
     *
     * @param txtPhone
     * @return
     */
    public static boolean validatePhone(JTextField txtPhone) {
        if (!txtPhone.getText().matches("[\\d]{8,15}")) {
            showMessage("Số điện thoại nhập không hợp ljee");
            txtPhone.setBackground(new Color(250, 255, 168));
            txtPhone.requestFocus();
            return false;
        }
        return true;
    }

    /**
     * check email
     *
     * @param txtEmail
     * @return
     */
    public static boolean validateEmail(JTextField txtEmail) {
        if (!txtEmail.getText().matches("^(([\\-\\w]+)\\.?)+@(([\\-\\w]+)\\.?)+\\.[a-zA-Z]{2,4}$")) {
            showMessage("Email not valid");
            txtEmail.setBackground(new Color(250, 255, 168));
            txtEmail.requestFocus();
            return false;
        }
        return true;
    }
    
    /**
     * check if is a real number
     * @param txtNumber
     * @return 
     */
    public static boolean validateFloatField(JTextField txtNumber) {
        if (!txtNumber.getText().matches("[\\d]{1,3}(\\.[\\d]{1,5})?")) {
            showMessage("Input is not valid float number");
            txtNumber.setBackground(new Color(250, 255, 168));
            txtNumber.requestFocus();
            return false;
        }
        return true;
    }
}
